home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / tftp.inc < prev    next >
Text File  |  2005-03-31  |  3KB  |  113 lines

  1. #
  2. #
  3. # This NASL script was written by Martin O'Neal of Corsaire 
  4. # (http://www.corsaire.com)
  5. # The script provides basic tftp functionality for use in other scripts...
  6. #
  7. # DISCLAIMER
  8. # The information contained within this script is supplied "as-is" with 
  9. # no warranties or guarantees of fitness of use or otherwise. Corsaire 
  10. # accepts no responsibility for any damage caused by the use or misuse of 
  11. # this information.
  12. #
  13. # GPLv2
  14.  
  15.  
  16.  
  17.  
  18. ############## declarations ################
  19.  
  20.  
  21. # declare function
  22. function tftp_get(port,path)
  23. {
  24.     # initialise variables
  25.     local_var request_data;
  26.     local_var request_ip;
  27.     local_var request_udp;
  28.     local_var response_udp;
  29.     local_var response_data;
  30.     local_var filter;
  31.     local_var source_port;
  32.     local_var destination_port;
  33.     source_port=23793+int((rand()%6157));
  34.     destination_port=port;
  35.         
  36.     # create request
  37.     request_data=raw_string(0x00,0x01)+path+raw_string(0x00)+'octet'+raw_string(0x00);
  38.     request_ip=forge_ip_packet(ip_hl:5,ip_v:4,ip_tos:0,ip_len:20,ip_id:rand(),ip_off:0,ip_ttl:64,ip_p:IPPROTO_UDP,ip_src:this_host());
  39.     request_udp=forge_udp_packet(ip:request_ip,uh_sport:source_port,uh_dport:destination_port,uh_ulen:8+strlen(request_data),data:request_data);
  40.  
  41.     # create filter
  42.     filter='udp and dst port '+source_port+' and src host '+get_host_ip();
  43.  
  44.     # send packet
  45.     response_udp=send_packet(request_udp,pcap_active:TRUE,pcap_filter:filter);    
  46.  
  47.     # check if response received
  48.     if(response_udp)
  49.     {
  50.         # retrieve udp data
  51.         response_data=get_udp_element(udp:response_udp,element:"data");
  52.         
  53.         # check if udp data is valid positive tftp data response
  54.         if(ord(response_data[0])==0x00 && ord(response_data[1])==0x03 && ord(response_data[2])==0x00 && ord(response_data[3])==0x01)
  55.         {
  56.             # remove tftp protocol header from data
  57.             response_data=substr(response_data,4);
  58.             
  59.             return(response_data);
  60.         }
  61.     }
  62.     
  63.     return;
  64. }
  65.  
  66.  
  67.  
  68. # declare function
  69. function tftp_put(port,path)
  70. {
  71.     # initialise variables
  72.     local_var request_data;
  73.     local_var request_ip;
  74.     local_var request_udp;
  75.     local_var response_udp;
  76.     local_var response_data;
  77.     local_var filter;
  78.     local_var source_port;
  79.     local_var destination_port;
  80.     source_port=32288+int((rand()%7354));
  81.     destination_port=port;
  82.         
  83.     # create request
  84.     request_data=raw_string(0x00,0x02)+path+raw_string(0x00)+'octet'+raw_string(0x00);
  85.     request_ip=forge_ip_packet(ip_hl:5,ip_v:4,ip_tos:0,ip_len:20,ip_id:rand(),ip_off:0,ip_ttl:64,ip_p:IPPROTO_UDP,ip_src:this_host());
  86.     request_udp=forge_udp_packet(ip:request_ip,uh_sport:source_port,uh_dport:destination_port,uh_ulen:8+strlen(request_data),data:request_data);
  87.  
  88.     # create filter
  89.     filter='udp and dst port '+source_port+' and src host '+get_host_ip();
  90.  
  91.     # send packet
  92.     response_udp=send_packet(request_udp,pcap_active:TRUE,pcap_filter:filter);    
  93.  
  94.     # check if response received
  95.     if(response_udp)
  96.     {
  97.         # retrieve udp data
  98.         response_data=get_udp_element(udp:response_udp,element:"data");
  99.         
  100.         # check if udp data is valid positive tftp data response
  101.         if(ord(response_data[0])==0x00 && ord(response_data[1])==0x04 && ord(response_data[2])==0x00 && ord(response_data[3])==0x00)
  102.         {
  103.             return(TRUE);
  104.         }
  105.     }
  106.     
  107.     return;
  108. }
  109.  
  110.  
  111.